﻿//从键盘输入两个工程师数据，写入一个二进制文件中。再从文件中读出这两个工程师的数据显示在屏幕上。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
typedef struct gz /*声明工程师工资数据结构体*/
{
    char gh[10];	/*工程师工号*/
    char xm[10];	/*工程师姓名*/
    float gwgz;	    /*工程师岗位工资*/
}GZ;
GZ a[2],b[2]; //存放工程师数据
main()
{
    FILE* fp=NULL;   
    int i;    
    if ((fp = fopen("d:\\gcs.dat", "wb+")) == NULL)//以读写方式打开二进制文件gcs.dat
    {
        printf("Cannot open file!");        
        exit(0);//退出程序
    }        
    printf("输入两个工程师的数据：\n");
    for (i = 0; i < 2; i++)
        scanf("%s%s%f", a[i].gh, a[i].xm, &a[i].gwgz);//从键盘输入数据到数组a
    fwrite(a, sizeof(GZ), 2, fp);//将数组a中数据写入文件fp，每次写sizeof(GZ)个字节，写2次。
    rewind(fp);//移动文件位置指针到文件的第一个字节
    i = 0;
    while (!feof(fp))
    {
        fread(&b[i], sizeof(GZ), 1, fp);//将文件fp中数据读入数组b，每次读sizeof(GZ)个字节，读1次。   
        i++;
    }
    printf("\n工号\t姓名\t岗位工资\n");
    for (i = 0; i < 2; i++)
        printf("%s\t%s\t%f\n", b[i].gh, b[i].xm, b[i].gwgz);//将数组b中数据输出到屏幕
    fclose(fp);
}